// var i;
// var $bundleConfig = require("./BundleConfig");
// var $eventManager = require("./EventManager");
// var $logManager = require("./LogManager");
// var $resKeeper = require("./ResKeeper");
// var $commonUtils = require("./CommonUtils");
// var $evenType = require("./EvenType");
// var $excel = require("./Excel");
// var $gameGlobalVariable = require("./GameGlobalVariable");
// var $nodePoolMag = require("./NodePoolMag");
// var $uI_MosterLogic = require("./UI_MosterLogic");
// var v = cc._decorator;
// var b = v.ccclass;
// var w = v.property;
// var I = v.inspector;
// var M = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.pathsNode = null;
//         t.onOver = null;
//         t.isCreateMoster = !1;
//         t.mosterboshu = 0;
//         t.mostertime = 0;
//         t.mosteraindex = 0;
//         t.chuguaicount = 0;
//         t.isBoShuOver = !1;
//         t.isonguai = !1;
//         t.miaojishu = 0;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype.onEnable = function () {
//         $eventManager.EventMgr.addEventListener($evenType.EVENT_TYPE.Game_Moster_FenLie, this.fenlieCreateMoster, this);
//         $eventManager.EventMgr.addEventListener(
//             $evenType.EVENT_TYPE.Game_ZhaoHuan_Moster,
//             this.zhaoHuanCreateMoster,
//             this
//         );
//     };
//     t.prototype.setOver = function (e) {
//         this.onOver = e;
//     };
//     t.prototype.resetBoShu = function () {
//         this.mostertime = 0;
//         this.mosteraindex = 0;
//     };
//     t.prototype.initMoster = function () {
//         this.mostertime = 0;
//         this.isCreateMoster = !0;
//     };
//     t.prototype.zhaoHuanCreateMoster = function (e) {
//         var t = this;
//         var o = $gameGlobalVariable.GameGlobalVariable.getMosterDis(e, this.pathsNode);
//         this.scheduleOnce(function () {
//             t.addMoster(e.mosterId, o.pos, null, o.tagindex);
//         }, 0.1);
//     };
//     t.prototype.fenlieCreateMoster = function (e) {
//         var t = this;
//         var o = $gameGlobalVariable.GameGlobalVariable.fenlieCreateMoster(e, this.pathsNode);
//         this.scheduleOnce(function () {
//             for (var n = 0; n < o.length; n++) {
//                 var i = o[n];
//                 t.addMoster(e.mosterId, i.pos, null, i.tagindex);
//             }
//         }, 0.1);
//     };
//     t.prototype.huishouMoster = function () {
//         this.resetValue();
//         var e = this.node.children;
//         var t = e.length;
//         for (var o = 0; o < t; o++) {
//             var n = e[0];
//             $nodePoolMag.NodePoolMag.instance.recycleNode(
//                 "moster_" + n.getComponent($uI_MosterLogic.default).mosterId,
//                 n
//             );
//         }
//     };
//     t.prototype.getNowBoShu = function () {
//         var e;
//         if (1 == $gameGlobalVariable.GameGlobalVariable.isTeShuLevel()) {
//             e = $excel.Excel.shuiguotiaozhan($gameGlobalVariable.GameGlobalVariable.teshulevel);
//         } else {
//             e = $excel.Excel.shuiguoguanqia($gameGlobalVariable.GameGlobalVariable.nowlevel);
//         }
//         var t = this.mosterboshu + 1;
//         if (this.mosterboshu + 1 > e.levelboshuid.length) {
//             t = e.levelboshuid.length;
//         }
//         return t;
//     };
//     t.prototype.resetValue = function () {
//         this.mostertime = 0;
//         this.mosteraindex = 0;
//         this.chuguaicount = 0;
//     };
//     t.prototype.createMoster = function () {
//         var e = this;
//         var t = (
//             1 == $gameGlobalVariable.GameGlobalVariable.isTeShuLevel()
//                 ? $excel.Excel.shuiguotiaozhan($gameGlobalVariable.GameGlobalVariable.teshulevel)
//                 : $excel.Excel.shuiguoguanqia($gameGlobalVariable.GameGlobalVariable.nowlevel)
//         ).levelboshuid;
//         if (t[this.mosterboshu]) {
//             var o = $excel.Excel.shuiguoboshu(t[this.mosterboshu]);
//             var n = -1;
//             var i = o.mosterid[this.mosteraindex];
//             if (!i) {
//                 $logManager.LogMgr.debug("当前这一波怪物全部出完");
//                 return void this.onOver();
//             }
//             if (i[2] == this.mostertime) {
//                 n = this.mosteraindex;
//                 this.mosteraindex += 1;
//             }
//             if (-1 == n) {
//                 return;
//             }
//             this.mostertime = 0;
//             var a = i[0];
//             !(function t(n) {
//                 e.addMoster(a, e.pathsNode.children[0].getPosition(), o);
//                 if (--n > 0) {
//                     e.scheduleOnce(function () {
//                         t(n);
//                     }, $commonUtils.default.limitInteger(1, 3) / 10);
//                 }
//             })(i[1]);
//         } else {
//             $logManager.LogMgr.debug("通关");
//         }
//     };
//     t.prototype.addMoster = function (e, t, o, n) {
//         if (void 0 === n) {
//             n = 1;
//         }
//         return __awaiter(this, void 0, void 0, function () {
//             var i;
//             var a;
//             var r;
//             return __generator(this, function (c) {
//                 switch (c.label) {
//                     case 0:
//                         if (1 == (i = $excel.Excel.shuiguoguaiwu(e)).boss) {
//                             $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.GAME_SHOW_BOOS);
//                         }
//                         return (a = $nodePoolMag.NodePoolMag.instance.getNode("moster_" + i.mostertype))
//                             ? [3, 2]
//                             : [
//                                   4,
//                                   this._loadRes(
//                                       $bundleConfig.BundleNames.Game,
//                                       "prefabs/moster/moster" + i.mostertype,
//                                       cc.Prefab
//                                   )
//                               ];
//                     case 1:
//                         r = c.sent();
//                         $nodePoolMag.NodePoolMag.instance.createNodeCount("moster_" + i.mostertype, 1, r);
//                         a = $nodePoolMag.NodePoolMag.instance.getNode("moster_" + i.mostertype);
//                         c.label = 2;
//                     case 2:
//                         a.x = t.x;
//                         a.y = t.y;
//                         a.scale = 0;
//                         cc.tween(a)
//                             .to(0.1, {
//                                 scale: 1.2
//                             })
//                             .to(0.1, {
//                                 scale: 1
//                             })
//                             .start();
//                         this.node.addChild(a);
//                         this.chuguaicount++;
//                         a.getComponent($uI_MosterLogic.default).setMosterInfo(
//                             e,
//                             this.pathsNode,
//                             this.chuguaicount,
//                             o,
//                             n
//                         );
//                         return [2];
//                 }
//             });
//         });
//     };
//     t.prototype.onCreateMoster = function (e) {
//         this.miaojishu += e * $gameGlobalVariable.GameGlobalVariable.jiasuState;
//         if (this.miaojishu >= 1 && this.isCreateMoster) {
//             this.miaojishu = 0;
//             this.createMoster();
//             this.mostertime += 0.5;
//         }
//     };
//     t.prototype.onDisable = function () {
//         $eventManager.EventMgr.rmEventListener($evenType.EVENT_TYPE.Game_Moster_FenLie, this.fenlieCreateMoster, this);
//         $eventManager.EventMgr.rmEventListener(
//             $evenType.EVENT_TYPE.Game_ZhaoHuan_Moster,
//             this.zhaoHuanCreateMoster,
//             this
//         );
//     };
//     __decorate([w(cc.Node)], t.prototype, "pathsNode", void 0);
//     return __decorate([b], t);
// })($resKeeper.default);
// exports.default = M;

// import {BundleNames} from "./BundleConfig";
// import {EventMgrInstance} from "./EventManager";
// import {LogMgr} from "./LogManager";
// import ResKeeper from "./ResKeeper";
// import CommonUtils from "./CommonUtils";
// import {EVENT_TYPE} from "./EvenType";
// import { Excel } from "./Excel";
// import { GameGlobalVariable } from "./GameGlobalVariable";
// import { NodePoolMag } from "./NodePoolMag";
// import UI_MosterLogic from "./UI_MosterLogic";

// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * 建议类名: MonsterManager
//  */
// @ccclass
// class UI_CreateMoster extends ResKeeper {
//     @property(cc.Node)
//     public pathsNode: cc.Node | null = null;

//     public onOver: Function | null = null;
//     public isCreateMoster: boolean = false;
//     public mosterboshu: number = 0;
//     public mostertime: number = 0;
//     public mosteraindex: number = 0;
//     public chuguaicount: number = 0;
//     public isBoShuOver: boolean = false;
//     public isonguai: boolean = false;
//     public miaojishu: number = 0;

//     onEnable(): void {
//         EventMgrInstance.addEventListener(EVENT_TYPE.Game_Moster_FenLie, this.fenlieCreateMoster, this);
//         EventMgrInstance.addEventListener(EVENT_TYPE.Game_ZhaoHuan_Moster, this.zhaoHuanCreateMoster, this);
//     }

//     /**
//      * 设置结束回调
//      * @param callback 结束回调函数
//      * 建议方法名: setEndCallback
//      */
//     setOver(callback: Function): void {
//         this.onOver = callback;
//     }

//     /**
//      * 重置波数
//      * 建议方法名: resetWave
//      */
//     resetBoShu(): void {
//         this.mostertime = 0;
//         this.mosteraindex = 0;
//     }

//     /**
//      * 初始化怪物
//      * 建议方法名: initializeMonster
//      */
//     initMoster(): void {
//         this.mostertime = 0;
//         this.isCreateMoster = true;
//     }

//     /**
//      * 召唤创建怪物
//      * @param event 事件对象
//      * 建议方法名: summonCreateMonster
//      */
//     zhaoHuanCreateMoster(event: any): void {
//         const monsterPosition = GameGlobalVariable.getMosterDis(event, this.pathsNode);
//         this.scheduleOnce(() => {
//             this.addMoster(event.mosterId, monsterPosition.pos, null, monsterPosition.tagindex);
//         }, 0.1);
//     }

//     /**
//      * 分裂创建怪物
//      * @param event 事件对象
//      * 建议方法名: splitCreateMonster
//      */
//     fenlieCreateMoster(event: any): void {
//         const monsterPositions = GameGlobalVariable.fenlieCreateMoster(event, this.pathsNode);
//         this.scheduleOnce(() => {
//             for (const position of monsterPositions) {
//                 this.addMoster(event.mosterId, position.pos, null, position.tagindex);
//             }
//         }, 0.1);
//     }

//     /**
//      * 回收怪物
//      * 建议方法名: recycleMonster
//      */
//     huishouMoster(): void {
//         this.resetValue();
//         const children = this.node.children;
//         for (const child of children) {
//             NodePoolMag.instance.recycleNode(
//                 "moster_" + child.getComponent(UI_MosterLogic).mosterId,
//                 child
//             );
//         }
//     }

//     /**
//      * 获取当前波数
//      * @returns 当前波数
//      * 建议方法名: getCurrentWave
//      */
//     getNowBoShu(): number {
//         let levelData;
//         if (GameGlobalVariable.isTeShuLevel() === 1) {
//             levelData = Excel.shuiguotiaozhan(GameGlobalVariable.teshulevel);
//         } else {
//             levelData = Excel.shuiguoguanqia(GameGlobalVariable.nowlevel);
//         }
//         let wave = this.mosterboshu + 1;
//         if (wave > levelData.levelboshuid.length) {
//             wave = levelData.levelboshuid.length;
//         }
//         return wave;
//     }

//     /**
//      * 重置值
//      * 建议方法名: resetValues
//      */
//     resetValue(): void {
//         this.mostertime = 0;
//         this.mosteraindex = 0;
//         this.chuguaicount = 0;
//     }

//     /**
//      * 创建怪物
//      * 建议方法名: createMonster
//      */
//     createMoster(): void {
//         const levelData = GameGlobalVariable.isTeShuLevel() === 1
//             ? Excel.shuiguotiaozhan(GameGlobalVariable.teshulevel)
//             : Excel.shuiguoguanqia(GameGlobalVariable.nowlevel);
//         const waveData = levelData.levelboshuid[this.mosterboshu];
//         if (waveData) {
//             const monsterData = Excel.shuiguoboshu(waveData);
//             let monsterIndex = -1;
//             const monsterInfo = monsterData.mosterid[this.mosteraindex];
//             if (!monsterInfo) {
//                 LogMgr.debug("当前这一波怪物全部出完");
//                 this.onOver?.();
//                 return;
//             }
//             if (monsterInfo[2] === this.mostertime) {
//                 monsterIndex = this.mosteraindex;
//                 this.mosteraindex += 1;
//             }
//             if (monsterIndex === -1) {
//                 return;
//             }
//             this.mostertime = 0;
//             const monsterId = monsterInfo[0];
//             const createMonsters = (count: number) => {
//                 this.addMoster(monsterId, this.pathsNode.children[0].getPosition(), monsterData);
//                 if (--count > 0) {
//                     this.scheduleOnce(() => {
//                         createMonsters(count);
//                     }, CommonUtils.limitInteger(1, 3) / 10);
//                 }
//             };
//             createMonsters(monsterInfo[1]);
//         } else {
//             LogMgr.debug("通关");
//         }
//     }

//     /**
//      * 添加怪物
//      * @param monsterId 怪物ID
//      * @param position 位置
//      * @param data 数据
//      * @param tagIndex 标签索引
//      * 建议方法名: addMonster
//      */
//     async addMoster(monsterId: number, position: cc.Vec2, data: any, tagIndex: number = 1): Promise<void> {
//         const monsterInfo = Excel.shuiguoguaiwu(monsterId);
//         if (monsterInfo.boss === 1) {
//             EventMgrInstance.dispatchEvent(EVENT_TYPE.GAME_SHOW_BOOS);
//         }
//         let monsterNode = NodePoolMag.instance.getNode("moster_" + monsterInfo.mostertype);
//         if (!monsterNode) {
//             const prefab = await this._loadRes(
//                 BundleNames.Game,
//                 "prefabs/moster/moster" + monsterInfo.mostertype,
//                 cc.Prefab
//             );
//             NodePoolMag.instance.createNodeCount("moster_" + monsterInfo.mostertype, 1, prefab);
//             monsterNode = NodePoolMag.instance.getNode("moster_" + monsterInfo.mostertype);
//         }
//         monsterNode.setPosition(position);
//         monsterNode.scale = 0;
//         cc.tween(monsterNode)
//             .to(0.1, { scale: 1.2 })
//             .to(0.1, { scale: 1 })
//             .start();
//         this.node.addChild(monsterNode);
//         this.chuguaicount++;
//         monsterNode.getComponent(UI_MosterLogic).setMosterInfo(
//             monsterId,
//             this.pathsNode,
//             this.chuguaicount,
//             data,
//             tagIndex
//         );
//     }

//     /**
//      * 创建怪物时的回调
//      * @param delta 时间增量
//      * 建议方法名: onMonsterCreation
//      */
//     onCreateMoster(delta: number): void {
//         this.miaojishu += delta * GameGlobalVariable.jiasuState;
//         if (this.miaojishu >= 1 && this.isCreateMoster) {
//             this.miaojishu = 0;
//             this.createMoster();
//             this.mostertime += 0.5;
//         }
//     }

//     onDisable(): void {
//         EventMgrInstance.rmEventListener(EVENT_TYPE.Game_Moster_FenLie, this.fenlieCreateMoster, this);
//         EventMgrInstance.rmEventListener(EVENT_TYPE.Game_ZhaoHuan_Moster, this.zhaoHuanCreateMoster, this);
//     }
// }

// export default UI_CreateMoster;

import { BundleNames } from "./BundleConfig";
import { EventMgrInstance } from "./EventManager";
import { LogMgr } from "./LogManager";
import ResKeeper from "./ResKeeper";
import CommonUtils from "./CommonUtils";
import { EVENT_TYPE } from "./EvenType";
import { Excel } from "./Excel";
import { GameGlobalVariable } from "./GameGlobalVariable";
import { NodePoolMag } from "./NodePoolMag";
import ViewMosterLogic from "./UI_MosterLogic";

const { ccclass, property, inspector } = cc._decorator;

/**
 * 建议类名: MonsterManager
 */
@ccclass
class ViewCreateMoster extends ResKeeper {
    @property(cc.Node)
    public pathsNode: cc.Node | null = null;

    public onOver: Function | null = null;
    public isCreateMoster: boolean = false;
    public mosterboshu: number = 0;
    public mostertime: number = 0;
    public mosteraindex: number = 0;
    public chuguaicount: number = 0;
    public isBoShuOver: boolean = false;
    public isonguai: boolean = false;
    public miaojishu: number = 0;

    onEnable(): void {
        EventMgrInstance.addListener(EVENT_TYPE.Game_Moster_FenLie, this.splitCreateMonster, this);
        EventMgrInstance.addListener(EVENT_TYPE.Game_ZhaoHuan_Moster, this.summonCreateMonster, this);
    }

    /**
     * 设置结束回调
     * @param callback 结束回调函数
     * 建议方法名: setEndCallback
     */
    setOver(callback: Function): void {
        this.onOver = callback;
    }

    /**
     * 重置波数
     * 建议方法名: resetWave
     */
    resetBoShu(): void {
        this.mostertime = 0;
        this.mosteraindex = 0;
    }

    /**
     * 初始化怪物
     * 建议方法名: initializeMonster
     */
    initMoster(): void {
        this.mostertime = 0;
        this.isCreateMoster = true;
    }

    /**
     * 召唤创建怪物
     * @param event 事件对象
     * 建议方法名: summonCreateMonster
     */
    summonCreateMonster(event: any): void {
        const monsterPosition = GameGlobalVariable.getMonsterDistance(event, this.pathsNode);
        this.scheduleOnce(() => {
            this.addMonster(event.mosterId, monsterPosition.pos, null, monsterPosition.tagindex);
        }, 0.1);
    }

    /**
     * 分裂创建怪物
     * @param event 事件对象
     * 建议方法名: splitCreateMonster
     */
    splitCreateMonster(event: any): void {
        const monsterPositions = GameGlobalVariable.splitCreateMonster(event, this.pathsNode);
        this.scheduleOnce(() => {
            monsterPositions.forEach(position => {
                this.addMonster(event.mosterId, position.pos, null, position.tagindex);
            });
        }, 0.1);
    }

    /**
     * 回收怪物
     * 建议方法名: recycleMonster
     */
    recycleMonster(): void {
        // this.resetValues();
        // const children = this.node.children;
        // children.forEach(child => {
        //     NodePoolMag.instance.recycleNodeToPool(
        //         "moster_" + child.getComponent(ViewMosterLogic).mosterId,
        //         child
        //     );
        // });


        this.resetValues();
        const children = this.node.children;

//         var e = this.node.children;
//         var t = e.length;
//         for (var o = 0; o < t; o++) {
//             var n = e[0];


        let len = children.length;
        for (let index = 0; index < len; index++) {
            const child = children[0];
            NodePoolMag.instance.recycleNodeToPool(
                "moster_" + child.getComponent(ViewMosterLogic).mosterId,
                child
            );
            
        }
    }

    /**
     * 获取当前波数
     * @returns 当前波数
     * 建议方法名: getCurrentWave
     */
    getCurrentWave(): number {
        let levelData;
        if (GameGlobalVariable.isSpecialLevel() === 1) {
            levelData = Excel.shuiguotiaozhan(GameGlobalVariable.teshulevel);
        } else {
            levelData = Excel.shuiguoguanqia(GameGlobalVariable.nowlevel);
        }
        let wave = this.mosterboshu + 1;
        if (wave > levelData.levelboshuid.length) {
            wave = levelData.levelboshuid.length;
        }
        return wave;
    }

    /**
     * 重置值
     * 建议方法名: resetValues
     */
    resetValues(): void {
        this.mostertime = 0;
        this.mosteraindex = 0;
        this.chuguaicount = 0;
    }

    /**
     * 创建怪物
     * 建议方法名: createMonster
     */
    createMonster(): void {
        // const levelData = GameGlobalVariable.isSpecialLevel() === 1
        //     ? Excel.shuiguotiaozhan(GameGlobalVariable.teshulevel)
        //     : Excel.shuiguoguanqia(GameGlobalVariable.nowlevel);
        // const waveData = levelData.levelboshuid[this.mosterboshu];
        // if (waveData) {
        //     const monsterData = Excel.shuiguoboshu(waveData);
        //     const monsterInfo = monsterData.mosterid[this.mosteraindex];
        //     if (!monsterInfo) {
        //         LogMgr.debug("当前这一波怪物全部出完");
        //         this.onOver?.();
        //         return;
        //     }
        //     if (monsterInfo[2] === this.mostertime) {
        //         this.mosteraindex += 1;
        //     } else {
        //         return;
        //     }
        //     this.mostertime = 0;
        //     const monsterId = monsterInfo[0];
        //     const createMonsters = (count: number) => {
        //         this.addMonster(monsterId, this.pathsNode!.children[0].getPosition(), monsterData);
        //         if (--count > 0) {
        //             this.scheduleOnce(() => createMonsters(count), CommonUtils.limitIntegerInRange(1, 3) / 10);
        //         }
        //     };
        //     createMonsters(monsterInfo[1]);
        // } else {
        //     LogMgr.debug("通关");
        // }


        const levelData = GameGlobalVariable.isSpecialLevel() === 1
            ? Excel.shuiguotiaozhan(GameGlobalVariable.teshulevel)
            : Excel.shuiguoguanqia(GameGlobalVariable.nowlevel);
        const waveData = levelData.levelboshuid[this.mosterboshu];
        if (waveData) {
            const monsterData = Excel.shuiguoboshu(waveData);
            let monsterIndex = -1;
            const monsterInfo = monsterData.mosterid[this.mosteraindex];
            if (!monsterInfo) {
                LogMgr.debug("当前这一波怪物全部出完");
                this.onOver?.();
                return;
            }
            if (monsterInfo[2] === this.mostertime) {
                monsterIndex = this.mosteraindex;
                this.mosteraindex += 1;
            }
            if (monsterIndex === -1) {
                return;
            }
            this.mostertime = 0;
            const monsterId = monsterInfo[0];
            const createMonsters = (count: number) => {
                this.addMonster(monsterId, this.pathsNode.children[0].getPosition(), monsterData);
                if (--count > 0) {
                    this.scheduleOnce(() => {
                        createMonsters(count);
                    }, CommonUtils.limitIntegerInRange(1, 3) / 10);
                }
            };
            createMonsters(monsterInfo[1]);
        } else {
            LogMgr.debug("通关");
        }
    }

    /**
     * 添加怪物
     * @param monsterId 怪物ID
     * @param position 位置
     * @param data 数据
     * @param tagIndex 标签索引
     * 建议方法名: addMonster
     */
    async addMonster(monsterId: number, position: cc.Vec2, data: any, tagIndex: number = 1): Promise<void> {
        // const monsterInfo = Excel.shuiguoguaiwu(monsterId);
        // if (monsterInfo.boss === 1) {
        //     EventMgrInstance.emitEvent(EVENT_TYPE.GAME_SHOW_BOOS);
        // }
        // let monsterNode = NodePoolMag.instance.getNodeFromPool("moster_" + monsterInfo.mostertype);
        // if (!monsterNode) {
        //     const prefab = await this._loadRes(
        //         BundleNames.Game,
        //         "prefabs/moster/moster" + monsterInfo.mostertype,
        //         cc.Prefab
        //     );
        //     NodePoolMag.instance.createNodePool("moster_" + monsterInfo.mostertype, 1, prefab);
        //     monsterNode = NodePoolMag.instance.getNodeFromPool("moster_" + monsterInfo.mostertype);
        // }
        // monsterNode.active = true;
        // monsterNode.setPosition(position);
        // monsterNode.scale = 0;
        // cc.tween(monsterNode)
        //     .to(0.1, { scale: 1.2 })
        //     .to(0.1, { scale: 1 })
        //     .start();
        // this.node.addChild(monsterNode);
        // this.chuguaicount++;
        // monsterNode.getComponent(ViewMosterLogic).initializeMonsterInfo(
        //     monsterId,
        //     this.pathsNode,
        //     this.chuguaicount,
        //     data,
        //     tagIndex
        // );

        const monsterInfo = Excel.shuiguoguaiwu(monsterId);
        if (monsterInfo.boss === 1) {
            EventMgrInstance.emitEvent(EVENT_TYPE.GAME_SHOW_BOOS);
        }
        let monsterNode = NodePoolMag.instance.getNodeFromPool("moster_" + monsterInfo.mostertype);
        if (!monsterNode) {
            const prefab = await this._loadRes(
                BundleNames.Game,
                "prefabs/moster/moster" + monsterInfo.mostertype,
                cc.Prefab
            );
            NodePoolMag.instance.createNodePool("moster_" + monsterInfo.mostertype, 1, prefab);
            monsterNode = NodePoolMag.instance.getNodeFromPool("moster_" + monsterInfo.mostertype);
        }
        monsterNode.setPosition(position);
        monsterNode.scale = 0;
        cc.tween(monsterNode)
            .to(0.1, { scale: 1.2 })
            .to(0.1, { scale: 1 })
            .start();
        this.node.addChild(monsterNode);
        this.chuguaicount++;
        monsterNode.getComponent(ViewMosterLogic).initializeMonsterInfo(
            monsterId,
            this.pathsNode,
            this.chuguaicount,
            data,
            tagIndex
        );
    }

    /**
     * 创建怪物时的回调
     * @param delta 时间增量
     * 建议方法名: onMonsterCreation
     */
    onCreateMonster(delta: number): void {
        this.miaojishu += delta * GameGlobalVariable.jiasuState;
        if (this.miaojishu >= 1 && this.isCreateMoster) {
            this.miaojishu = 0;
            this.createMonster();
            this.mostertime += 0.5;
        }
    }

    onDisable(): void {
        EventMgrInstance.removeListener(EVENT_TYPE.Game_Moster_FenLie, this.splitCreateMonster, this);
        EventMgrInstance.removeListener(EVENT_TYPE.Game_ZhaoHuan_Moster, this.summonCreateMonster, this);
    }
}

export default ViewCreateMoster;